package com.manman.algorithm.sort.base;

/**
 * @author: yeshengbin
 * @date: 2025/5/30 7:41
 * @description: 插入排序
 * 时间复杂度：O(n^2)
 * 空间复杂度：O(1)
 * 稳定性：稳定
 * 原地排序：是
 */
public class InsertSort {

    public static void insertSort(int[] arr) {
        int n = arr.length;
        for (int i = 1; i < n; i++) {
            int current = arr[i];
            int j = i - 1;
            while (j >= 0 && arr[j] > current) {
                // 将大于 current 的元素向后移动一位
                arr[j + 1] = arr[j];
                j--;
            }
            // 将 current 插入到正确的位置
            arr[j + 1] = current;
        }
    }

    public static void main(String[] args) {
        int[] arr = {64, 34, 25, 12, 22, 11, 90};
        insertSort(arr);
        System.out.println("排序后的数组：");
        for (int i : arr) {
            System.out.print(i + " ");
        }
        System.out.println();
    }
}
